#!/bin/sh
# test ncgen3 for generating classic and 64-bit offset files
# Argument, if any, is a directory into which (large) files are written.

case $# in
    0)  
	LFSDIR=. ;;
    1)
	LFSDIR=$1 ;;
    *)  
        echo too many args
        exit 1
esac

NCGEN=./ncgen3
NCDUMP=../ncdump/ncdump

# test large netCDF files with fixed vars, record vars
for version in 1 2; do  # version 1 is classic, version 2 is 64-bit offset
    for file in bigf$version bigr$version; do
	if $NCGEN -b -x -v $version -o $LFSDIR/$file.nc $file.cdl
        then
	    echo "*** success: $NCGEN -b -x -v $version -o $LFSDIR/$file.nc $file.cdl"
	    rm $LFSDIR/$file.nc
	else
	    echo "### failure: $NCGEN -b -x -v $version -o $LFSDIR/$file.nc $file.cdl"
	    exit 1
	fi
    done
done

# test for detection of variables that are too big for classic format
for file in bigf2 bigr2; do
    if $NCGEN -b -x -v 1 -o $LFSDIR/$file.nc $file.cdl 2>/dev/null
    then
        echo "### failure detecting error: $NCGEN -b -x -v 1 -o $LFSDIR/$file.nc $file.cdl"
        rm -f $file.nc
    else
        echo "*** success detecting error: $NCGEN -b -x -v 1 -o $LFSDIR/$file.nc $file.cdl"
    fi
done

# test for detection of variables that are too big for 64-bit offset format
for file in bigf3 bigr3; do
    if $NCGEN -b -x -v 2 -o $LFSDIR/$file.nc $file.cdl 2>/dev/null
    then
        echo "### failure detecting error: $NCGEN -b -x -v 2 -o $LFSDIR/$file.nc $file.cdl"
        rm -f $file.nc
    else
        echo "*** success detecting error: $NCGEN -b -x -v 2 -o $LFSDIR/$file.nc $file.cdl"
    fi
done

rm -f test.cdl *.nc
